package com.lanou3g.code0417.thread1;

/**
 * Created by dllo on 18/4/17.
 */

/*

* 线程 是计算机资源调动的最小单位，并不是java中的概念，所有的计算机基本上都有线程的概念，线程是为了让计算机在同一时间能做不同的事情
* 本质上就是CPU等资源在不断的切线程的执行
*
* */
public class Main {
    public static void main(String[] args) {
        Thread a = new ThreadA();
        Thread b = new ThreadB();

        //定义线程的第二种方式，直接创建Thread类的对象，把Runnable的实现类对象，通过Thread类的构造方法传入线程中
        Runnable runnableC = new RunnableC(); // 把线程要做的事情放在 RunnableC 中
        Thread c = new Thread(runnableC);  // runnableC 是target


//        a.run();  不是线程，是普通的对象.方法
//        b.run();
        //for循环在上面,等for执行完毕,才会start AB线程
        for (int i = 0; i < 10000; i++) {
            System.out.println("M");
        }

        //线程启动(线程不需要对象.对象方法,创建对象后run自动创建,用start启动线程)
        a.start();
        b.start();
        c.start();  //启动线程（线程的启动永远都是start，线程的实现一定是run）

        /*
        *
        * 启动线程:使用线程对象的start方法,开启一个线程,启动之后,这个线程就交给操作系统了,会自动的执行里面的run方法
        *
        * psvm也是运行在一个线程中的,这个线程,我们通常叫做主线程
        *
        * */


    }

}

